package websocket

// 使用示例：
//
// 在 Controller 中使用：
//
// import (
//     "game-simple/internal/infrastructure/core"
//     "game-simple/internal/infrastructure/websocket"
//     "github.com/gin-gonic/gin"
// )
//
// // 方式1: 使用基础设施管理器中的 WebSocket
// func HandleWebSocket(c *gin.Context) {
//     ws := core.Get().WebSocket
//
//     // 获取连接ID（可以从 JWT token 中获取用户ID）
//     userID := "user_123"
//
//     ws.HandleConnection(
//         c,
//         userID,
//         func(conn *websocket.Connection) {
//             // 连接建立时的回调
//             ws.BroadcastMessage("user_joined", map[string]interface{}{
//                 "user_id": userID,
//                 "message": "用户加入",
//             })
//         },
//         func(conn *websocket.Connection, message []byte) error {
//             // 处理接收到的消息
//             var msg Message
//             if err := json.Unmarshal(message, &msg); err != nil {
//                 return err
//             }
//
//             switch msg.Type {
//             case "chat":
//                 // 处理聊天消息
//                 ws.BroadcastMessage("chat", map[string]interface{}{
//                     "from":    userID,
//                     "message": msg.Payload,
//                 })
//             case "ping":
//                 // 响应 ping
//                 conn.SendMessage("pong", nil)
//             }
//
//             return nil
//         },
//         func(conn *websocket.Connection) {
//             // 连接断开时的回调
//             ws.BroadcastMessage("user_left", map[string]interface{}{
//                 "user_id": userID,
//             })
//         },
//     )
// }
//
// // 方式2: 发送消息给特定用户
// func SendMessageToUser(userID string, msgType string, payload interface{}) error {
//     ws := core.Get().WebSocket
//     return ws.SendMessageToID(userID, msgType, payload)
// }
//
// // 方式3: 广播消息给所有用户
// func BroadcastToAll(msgType string, payload interface{}) error {
//     ws := core.Get().WebSocket
//     return ws.BroadcastMessage(msgType, payload)
// }
//
// // 方式4: 获取连接信息
// func GetConnectionInfo() (int, []string) {
//     ws := core.Get().WebSocket
//     count := ws.GetConnectionCount()
//     connections := ws.GetConnections()
//     return count, connections
// }

